package com.dalin.framework.common.utils;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.dalin.framework.common.PropertyConst;

/*****************************************************************************
 * @content: 常用IO操作方法汇总                                                                                                                                           *
 * @author : 那建林                                                                                                                                                                   *
 * @crtDate: 2010-01-19                                                     *
 ****************************************************************************/
public final class IoUtils {
	private IoUtils() {} // 不允许构造
	private static final Log log = LogFactory.getLog(IoUtils.class);
	
	
	/*************************************************************************
	 * @content: 将输入流存储进输出流
	 * @param  : in 输入流
	 * @param  : out 输出流
	 * @author : 那建林
	 * @crtDate: 2010-03-12
	 * @chaDate: 2010-03-12
	 */
	public static long store(InputStream in, OutputStream out) throws Exception {
		long sum = 0;
		int n;
		byte[] b = new byte[4096];
		while (-1 != (n = in.read(b))) {
			out.write(b, 0, n);
			sum += n;
		}
		out.flush();
		in.close();
		out.close();
		return sum;
	} // ends method
//	public static long store(Reader in, Writer out) throws Exception {
//		BufferedReader br = new BufferedReader(in);
//		BufferedWriter bw = new BufferedWriter(out);
//		long sum = 0;
//		int n;
//		char[] b = new char[4096];
//		while (-1 != (n = br.read(b))) {
//			bw.write(b, 0, n);
//			sum += n;
//		} // ends while
//		bw.flush();
//		in.close();
//		br.close();
//		out.close();
//		bw.close();
//		return sum;
//	} // ends method 有中文不行
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
//	/*************************************************************************
//	 * @content: 压缩java源文件代码，去掉换行，逗号大括号等号等符号两边空格
//	 *           及注释去掉，变量用n1、n2、n3表示，
//	 * @param  : sourcePath 待压缩的目录
//	 * @author : 那建林
//	 * @crtDate: 2010-01-20
//	 * @chaDate: 2010-01-20
//	 */
//	public static void reduceJavaSources(String sourcePath) throws Exception {
//		List<File> allFileList = getAllFiles(sourcePath);
//		for (File srcFile : allFileList) {
//			System.out.println(srcFile.getPath()+"======" + srcFile.getAbsolutePath());
//				
//				
//		}
//		//未完成
//	}
//	
//	
//	
//	/*************************************************************************
//	 * @content: 按行读取文本文件,按行返回List<String>集合,一行对应一条list记录
//	 * @param  : srcFile要读取的文件路径
//	 * @return : List<String> 
//	 * @author : 那建林
//	 * @crtDate: 2010-01-20
//	 * @chaDate: 2010-01-20
//	 */
//	public static List<String> readFileLineToList(String srcFile) throws Exception {
//		List<String> rtnList = new LinkedList<String>();
//		FileInputStream fis = new FileInputStream(srcFile);
//		InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
//		BufferedReader br = new BufferedReader(isr);
//
//		String s;
//		while ((s = br.readLine()) != null) {
//			rtnList.add(s);
//		}
//		br.close();
//		isr.close();
//		fis.close();
//		return rtnList;
//	}
//	
//	/*************************************************************************
//	 * @content: 断点续传
//	 * @param  : srcFile 待上传的File文件
//	 * @param  : destFile 目标File
//	 * @author : 那建林
//	 * @crtDate: 2010-01-22
//	 * @chaDate: 2010-01-22
//	 */
//	public static void uploadFileMayBreak(File srcFile, File destFile) throws Exception {
//		InputStream in = new FileInputStream(srcFile);
//		BufferedInputStream bis = new BufferedInputStream(in);
//		bis.skip(destFile.length());
//		FileOutputStream fon = new FileOutputStream(destFile,true);
//		BufferedOutputStream bos = new BufferedOutputStream(fon);
//		byte[] b = new byte[1024];
//		int writeLen; 
//		while ((writeLen = bis.read(b)) != -1) {
//			bos.write(b, 0, writeLen);
//		}
//		bis.close();
//		in.close();
//		bos.close();
//		fon.close();
//	}
//	
//	
//	/*************************************************************************
//	 * @content: 断点下载
//	 * @param  : 
//	 * @param  : 
//	 * @author : 那建林
//	 * @crtDate: 2010-01-22
//	 * @chaDate: 2010-01-22
//	 */
//	private static int ii = 0;
//	public static int downloadMayBreak(int i) {
//		ii = i;
//		return ii;
//	}

}

